package server.model.remotes;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.AbstractList;
import java.util.ArrayList;

import server.model.administration.MeetingService;
import server.model.meeting.Participant;
import server.model.meeting.User;

/**
* IAdmin.java (server.model.remotes) extends Remote;
* Interface van Admin.java (server.model.administration);
*/
public interface IAdmin extends Remote{

	/**
	 * Creatie van een nieuwe user; Deze wordt geregistreerd met naam, wachtwoord en email;
	 * @param name : De opgegeven naam van de user;
	 * @param password : Het opgegeven wachtwoord;
	 * @param email : Het opgegeven emailadres;
	 * @throws RemoteException;
	*/
	public boolean registerUser(String name, String password, String email) throws RemoteException;

	/**
	 * Inloggen van een user; Deze logt in met naam en wachtwoord;
	 * @param name : De opgegeven naam van de user;
	 * @param password : Het opgegeven wachtwoord;
	 * @throws RemoteException;
	*/
	public IMeetingService loginUser(String name, String password)throws RemoteException;
	
	/**
	 * Geeft een lijst van alle users;
	 * @return ArrayList User;
	 * @throws RemoteException;
	 */
	public ArrayList<User> getUsers()throws RemoteException;
	
	/**
	 * Geeft een lijst van alle groepen;
	 * @return ArrayList Participant;
	 * @throws RemoteException
	 */
	public ArrayList<Participant> getParticipants()throws RemoteException;
	
	/**
	 * Creatie van een nieuwe groep; Geregistreerd met naam en leden;
	 * @param name : De naam van de groep;
	 * @param usernames : De namen van de leden van de groep;
	 * @throws RemoteException
	 */
	public boolean createGroup(String name, String[]usernames) throws RemoteException;
	
}
